home *** CD-ROM | disk | FTP | other *** search
/ PC-SIG Library 8 / PC-SIG Library CD-ROM (8th Edition) (1990-04).iso / 201_300 / disk0218 / am_ed.bas < prev    next >
Encoding:
BASIC Source File  |  1987-03-29  |  3.6 KB  |  115 lines

  1. 10 '     PROGRAM TO CONVERT AN ADDRESS MANAGER DATABASE FILE INTO AN
  2. 20 '     EDIT FILE.
  3. 30 '  
  4. 40 '     AN ADDRESS MANAGER DATABASE FILE HAS THE FOLLOWING FORMAT:
  5. 50 '             SIZE | ENTRY 1 | ENTRY 2 | ... | ENTRY N | <FF>
  6. 60 '        WHERE SIZE IS A 4 BYTE INTEGER AND EACH ENTRY HAS THE
  7. 70 '        FOLLOWING FORMAT:
  8. 80 '             <FF> NAME <CR> ADDRESS LINE 1 <CR> ADDRESS LINE 2 <CR>
  9. 90 '             ADDRESS LINE 3 <CR> AREA CODE <CR> PHONE PREFIX <CR>
  10. 100 '            LAST 4 DIGITS <CR> COMMENT LINE 1 <CR> COMMENT LINE 2
  11. 110 '       WHERE <FF> IS A FORM FEED BYTE AND <CR> IS A CARRIAGE RETURN BYTE
  12. 120 '  
  13. 130 '    THE ADDRESS MANAGER TREATS A DATABASE FILE AS A DIRECT ACCESS FILE
  14. 140 '    HAVING A RECORD LENGTH OF 512 BYTES.  THIS PROGRAM ACCESS THE FILE
  15. 150 '    64 BYTES AT A TIME FOR CONVENIENCE.
  16. 160 '------------------------------------------------------------------------
  17. 170 INPUT "Enter input database file:  ",FILE1$
  18. 180 OPEN FILE1$ AS #1 LEN=64
  19. 190 FIELD #1,64 AS B$
  20. 200 INPUT "Enter output ASCII file:    ",FILE2$
  21. 210 OPEN FILE2$ FOR OUTPUT AS #2
  22. 215 INPUT "Ouput Comments on 2 lines:  ",C$
  23. 216 CMNT$ = MID$( C$, 1, 1 ) : IF CMNT$ = "y" THEN CMNT$ = "Y"
  24. 220 IREC%=1
  25. 230 GET #1,IREC%
  26. 240 A$ = B$
  27. 250 IREC% = IREC% + 1
  28. 260 GET #1,IREC%
  29. 270 C$ = A$ + B$
  30. 280 '---------------------------DISPLAY THE FILE SIZE
  31. 290 SIZE = CVI( MID$( C$, 1, 2 ) )
  32. 300 IF SIZE < 0 THEN SIZE = SIZE + 65536
  33. 310 PRINT "DATABASE SIZE ";SIZE;" BYTES"
  34. 320 '        DEFINE THE FORM FEED CHARACTER, FF
  35. 330 FF$ = CHR$( 12 )
  36. 340 J% = INSTR(C$,FF$)
  37. 350 '        THE FF CHARACTER MUST BE THE 5TH CHARACTER IN FILE
  38. 360 IF J% <> 5 THEN PRINT "ILLEGAL FILE TYPE" : END
  39. 370 J% = J% + 1
  40. 380 '        DEFINE THE CARRIAGE RETURN CHARACTER, CR
  41. 390 CR$ = CHR$( 13 )
  42. 400 '---------------------------ENTRY OUTPUT LOOP
  43. 410 '---------------------------NAME
  44. 420 GOSUB 1000
  45. 430 K% = INSTR( J%, C$, CR$ )
  46. 440 IF J% >= SIZE THEN END
  47. 450 L$ = MID$( C$, J%, K%-J% )
  48. 460 PRINT L$
  49. 470 PRINT #2,L$
  50. 480 J% = K% + 1
  51. 490 '---------------------------ADDRESS LINE 1
  52. 500 GOSUB 1000
  53. 510 K% = INSTR( J%, C$, CR$ )
  54. 520 L$ = MID$( C$, J%, K%-J% )
  55. 530 PRINT L$
  56. 540 PRINT #2,L$
  57. 550 J% = K% + 1
  58. 560 '---------------------------ADDRESS LINE 2
  59. 570 GOSUB 1000
  60. 580 K% = INSTR( J%, C$, CR$ )
  61. 590 L$ = MID$( C$, J%, K%-J% )
  62. 600 PRINT L$
  63. 610 PRINT #2,L$
  64. 620 J% = K% + 1
  65. 630 '---------------------------ADDRESS LINE 3
  66. 640 GOSUB 1000
  67. 650 K% = INSTR( J%, C$, CR$ )
  68. 660 L$ = MID$( C$, J%, K%-J% )
  69. 670 PRINT L$
  70. 680 PRINT #2,L$
  71. 690 J% = K% + 1
  72. 700 '---------------------------PHONE LINE
  73. 710 GOSUB 1000
  74. 720 K% = INSTR(J%,C$,CR$)
  75. 730 L1$ = MID$(C$,J%,K%-J%)
  76. 740 J%=K%+1
  77. 750 K% = INSTR(J%,C$,CR$)
  78. 760 L2$ = MID$(C$,J%,K%-J%)
  79. 770 J%=K%+1
  80. 780 K% = INSTR(J%,C$,CR$)
  81. 790 L3$ = MID$(C$,J%,K%-J%)
  82. 800 PRINT "(";L1$;")";L2$;"-";L3$
  83. 810 PRINT #2,"(";L1$;")";L2$;"-";L3$
  84. 820 J% = K% + 1
  85. 830 '---------------------------COMMENT LINE 1
  86. 840 GOSUB 1000
  87. 850 K% = INSTR(J%,C$,CR$)
  88. 860 L$ = MID$(C$,J%,K%-J%)
  89. 870 IF CMNT$ = "Y" THEN PRINT L$ : PRINT #2,L$
  90. 890 J% = K% + 1
  91. 900 '---------------------------COMMENT LINE 2
  92. 910 GOSUB 1000
  93. 920 K% = INSTR(J%,C$,FF$)
  94. 930 L$ = MID$(C$,J%,K%-J%)
  95. 940 IF CMNT$ = "Y" THEN PRINT L$ : PRINT #2,L$
  96. 950 PRINT : PRINT #2,""
  97. 960 J% = K% + 1
  98. 970 GOTO 420
  99. 980 '---------------------------END OF LOOP
  100. 990 '  
  101. 1000 '---------------------INPUT BUFFER UPDATE ROUTINE
  102. 1010 IF J% <= 64 THEN RETURN
  103. 1020 J% = J% - 64 : SIZE = SIZE - 64
  104. 1030 A$ = B$
  105. 1040 IREC% = IREC% + 1
  106. 1050 ON ERROR GOTO 1100
  107. 1060 GET #1,IREC%
  108. 1070 ON ERROR GOTO 0
  109. 1080 C$ = A$ + B$
  110. 1090 RETURN
  111. 1100 '---------------------ERROR TRAPPING
  112. 1110 B$ = ""
  113. 1120 RESUME
  114. 
  115.